//package io.renren.entity.mongo;
//
//import io.renren.adaptor.MongoTableInfoAdaptor;
//import org.apache.commons.collections.CollectionUtils;
//
//import java.io.Serializable;
//import java.util.*;
//
//
///**
// * 解析表之后得到的信息实体
// * 换句话说这个类就是一张mongo一张表的内容
// *
// * @author gxz 514190950@qq.com
// */
//
//public class MongoDefinition implements Serializable {
//    /***属性名**/
//    private String propertyName;
//    /***属性类型 对应mongodb api $type   如果没有类型 表示这是一个顶层实体  而不是内嵌属性**/
//    private Integer type;
//    /***此属性是否是数组**/
//    private boolean array = false;
//    /***如果此属性是对象  那么他仍然有此类型的子类**/
//    private List<MongoDefinition> child;
//
//
//    public List<MongoGeneratorEntity> getChildrenInfo(String tableName) {
//        List<MongoGeneratorEntity> result = new ArrayList<>();
//        MongoGeneratorEntity info = new MongoGeneratorEntity();
//        // 表信息
//        Map<String, String> tableInfo = MongoTableInfoAdaptor.tableInfo(tableName);
//        // 列名信息
//        List<Map<String, String>> columnsInfo = new ArrayList<>();
//        info.setColumns(columnsInfo);
//        info.setTableInfo(tableInfo);
//        result.add(info);
//        List<MongoDefinition> child = this.getChild();
//        for (MongoDefinition mongoDefinition : child) {
//            Map<String, String> columnInfo = new HashMap<>(5);
//            columnInfo.put("columnName", mongoDefinition.getPropertyName());
//            columnInfo.put("dataType", Type.typeInfo(mongoDefinition.getType()));
//            columnInfo.put("extra", mongoDefinition.isArray() ? "array" : "");
//            columnsInfo.add(columnInfo);
//            if (mongoDefinition.hasChild()) {
//                result.addAll(mongoDefinition.getChildrenInfo(mongoDefinition.getPropertyName()));
//            }
//        }
//        return result;
//    }
//
//    public boolean hasChild() {
//        final int objectType = 3;
//        return type == null || Objects.equals(type, objectType) || CollectionUtils.isNotEmpty(child);
//    }
//
//
//    public boolean primaryBean() {
//        return type == null;
//    }
//
//
//    public MongoDefinition setType(Integer type) {
//        this.type = type;
//        return this;
//    }
//
//    public String getPropertyName() {
//        return propertyName;
//    }
//
//    public MongoDefinition setPropertyName(String propertyName) {
//        this.propertyName = propertyName;
//        return this;
//    }
//
//    public Integer getType() {
//        return type;
//    }
//
//    public boolean isArray() {
//        return array;
//    }
//
//    public MongoDefinition setArray(boolean array) {
//        this.array = array;
//        return this;
//    }
//
//    public List<MongoDefinition> getChild() {
//        return child;
//    }
//
//    public MongoDefinition setChild(List<MongoDefinition> child) {
//        this.child = child;
//        return this;
//    }
//}
